package com.jiang.剑指Offer.位运算.NC258;

/**
 * @author Jiang
 * @version 1.0
 * @date 2024/12/20 22:42
 */
public class Solution {
    public int Add(int num1, int num2) {
        // add表示进位值
        int add = num2;
        // sum表示总和
        int sum = num1;
        // 当不再有进位的时候终止循环
        while(add != 0) {
            // 将每轮的无进位和与进位值做异或求和
            int temp = sum ^ add;
            // 进位值是用与运算产生的
            add = (sum & add) << 1;
            // 更新sum为新的和
            sum = temp;
        }
        return sum;
    }
}
